//匿名函数：(function(){})
// let test = 1;

//window 1减少作用域查找 2压缩减少体积
//undefined 避免低版本浏览器篡改
; (function (window, undefined) {

  function init(el) {
    //获取所有数据
    let els = document.querySelectorAll(el)
    //遍历数据，将js dom绑定到jq对象上
    for (let i = 0; i < els.length; i++) {
      //i 索引 els[i] 获取js对象
      this[i] = els[i]
    }
    this.length = els.length

    //上述代码优化
    //let arr = []
    //[].push.apply(this,els)
  }

  let jQuery = function (el) {
    return new init(el)
  }

  //给jq增加一个快捷操作 也就是静态方法 改静态方法可以给init添加原型方法
  jQuery.extend = function (object) {
    for (let key in object) {
      init.prototype[key] = object[key]
    }
  }

  jQuery.extend2 = function (object) {
    for (let key in object) {
      jQuery[key] = object[key]
    }
  }

  init.prototype = {
    css(cssAttr, cssVal) {
      console.log(1, this)//===构造函数中this
      for (let i = 0; i < this.length; i++) {
        this[i].style[cssAttr] = cssVal//当对象的键是变量时，用数组方法
      }
      return this
    },
    ajax(options) { },
    attr(options) { },
    addClass(options) { },
  }

  window.jQuery = window.$ = jQuery
})(window)

//$()
//jQuery()